package com.atcd.jdies;

import redis.clients.jedis.Jedis;

import java.util.Random;

public class PhoneCode {
    public static void main(String[] args) {

      yanzhengCode("15583162269");
//  Verity("15583162269","993057");
    }

    //生成一个6为的数字验证码
    public static String getCode(){
        Random random = new Random();

        String str="";
        for (int i=0;i<6;i++){
            int rand = random.nextInt(10);
            str+=rand;
        }
        return str;

    }

    //让验证码放到redis中，2分钟有效。每天一个手机只能用3次
    public  static  void  yanzhengCode(String phone){
        //连接reids
        Jedis jedis=new Jedis("192.168.80.100",6379);
        //拼接一下key
        //手机的发送次数的Key
        String countKey="VerifyCode"+phone+":count";
        //验证码的key
        String codeKey="VerifyCode"+phone+":code";

        //每个手机一天只能发送3次
        String count = jedis.get(countKey);
        if(count==null){
            //如果第一次发送，那就设置发送次数为1
            jedis.setex(countKey,24*60*60,"1");
        }
        else if(Integer.parseInt(count)<=2) {
            jedis.incr(countKey);
        }
        else  if(Integer.parseInt(count)>2){
            //发送次数为3次的时候,不能再发送
            System.out.println("今天的操作次数已经超过了3次");
            //关闭操作
            jedis.close();
            //超过3次直接返回,不去刷新验证码
            return;
        }

        //发送验证码放到redis中去
        String vcode=getCode();
        jedis.setex(codeKey,120,vcode);

        jedis.close();

    }

    //验证码的校验
    public  static  void Verity(String phone,String code){
        //连接reids
        Jedis jedis=new Jedis("192.168.80.100",6379);

        //获取验证码
        String codeKey="VerifyCode"+phone+":code";
        String redisCode=jedis.get(codeKey);

        //判断
        if(code.equals(redisCode)){
            System.out.println("验证通过");
        }
        else {
            System.out.println("验证失败");
        }

        jedis.close();
    }
}
